package com.ruoyi.web.controller.bookkeeping;

import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.bookkeeping.domain.vo.MsgResult;
import com.ruoyi.bookkeeping.domain.vo.TableDataInfoVo;
import com.ruoyi.common.constant.HttpStatus;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.common.utils.StringUtils;
import org.apache.poi.ss.formula.functions.T;

import java.util.List;

public class BaseController {

    /**
     * 响应请求分页数据
     */
    protected TableDataInfoVo getDataTable(Page page)
    {
        TableDataInfoVo rspData = new TableDataInfoVo();
        rspData.setCode(HttpStatus.SUCCESS);
        rspData.setMsg("查询成功");
        rspData.setRows(page.getRecords());
        rspData.setTotal(page.getTotal());
        return rspData;
    }

    protected TableDataInfoVo getDataTable(List rows, long total) {
        TableDataInfoVo rspData = new TableDataInfoVo();
        rspData.setCode(HttpStatus.SUCCESS);
        rspData.setMsg("查询成功");
        rspData.setRows(rows);
        rspData.setTotal(total);
        return rspData;
    }

    /**
     * 返回成功
     */
    public MsgResult success(){
        return MsgResult.success();
    }

    /**
     * 返回失败消息
     */
    public MsgResult error(){
        return MsgResult.error();
    }

    /**
     * 返回成功消息
     */
    public MsgResult success(String message){
        return MsgResult.success(message);
    }

    /**
     * 返回成功消息
     */
    public MsgResult success(Object data){
        return MsgResult.success(data);
    }

    /**
     * 返回失败消息
     */
    public MsgResult error(String message){
        return MsgResult.error(message);
    }

    /**
     * 响应返回结果
     *
     * @param rows 影响行数
     * @return 操作结果
     */
    protected MsgResult toAjax(int rows){
        return rows > 0 ? MsgResult.success() : MsgResult.error();
    }

    /**
     * 响应返回结果
     *
     * @param result 结果
     * @return 操作结果
     */
    protected MsgResult toAjax(boolean result) throws Exception {
        return result ? success() : error();
    }

    /**
     * 页面跳转
     */
    public String redirect(String url)
    {
        return StringUtils.format("redirect:{}", url);
    }

    /**
     * 获取用户缓存信息
     */
    public LoginUser getLoginUser()
    {
        return SecurityUtils.getLoginUser();
    }

    /**
     * 获取登录用户id
     */
    public Long getUserId()
    {
        return getLoginUser().getUserId();
    }

    /**
     * 获取登录部门id
     */
    public Long getDeptId()
    {
        return getLoginUser().getDeptId();
    }

    /**
     * 获取登录用户名
     */
    public String getUsername()
    {
        return getLoginUser().getUsername();
    }


}
